/***************************************************************************
 *   Copyright (C) 2007 by Ziman & Xloverin                                *
 *   ziman@centrum.sk, xloverin@gmail.com                                  *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#include "connection.h"
#include "core.h"
#include <QStringList>
#include <QMessageBox>

Connection::Connection(Core *core)
{
	m_core = core;
	socket = new QTcpSocket(this);

	connect(socket, SIGNAL(connected()), this, SIGNAL(connected()));
	connect(socket, SIGNAL(disconnected()), this, SIGNAL(disconnected()));
	connect(socket, SIGNAL(readyRead()), this, SLOT(on_socket_readyRead()));
}

void Connection::close()
{
	socket->close();
}

void Connection::write(QString data)
{
	socket->write(data.toLocal8Bit());
}

void Connection::on_socket_readyRead()
{
	QByteArray curBuffer = socket->readAll();
	buffer.append(curBuffer);

	QList<QByteArray> lines = buffer.split('\n');
	buffer = lines.takeLast();
			
	for (QList<QByteArray>::iterator it = lines.begin(); it != lines.end(); ++it) {
				
		// Delete CR
		it->replace('\r', "");
		it->replace('\007', "");
		it->append('\n');
				
		emit lineDataReady(*it);
	}
	
	emit charDataReady(curBuffer);
}

bool Connection::active()
{
	return (socket->state() == QAbstractSocket::ConnectedState);
}

void Connection::open(QString host, int port)
{
	socket->connectToHost(host, port, QIODevice::ReadWrite);
}

Connection::~Connection()
{
	socket->close();
	delete socket;
}


